home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / beans / Statement.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.7 KB  |  150 lines

  1. package java.beans;
  2.  
  3. import com.sun.beans.ObjectHandler;
  4. import java.lang.reflect.Array;
  5. import java.lang.reflect.Constructor;
  6. import java.lang.reflect.InvocationTargetException;
  7. import java.lang.reflect.Method;
  8. import sun.reflect.misc.MethodUtil;
  9.  
  10. public class Statement {
  11.    private static Object[] emptyArray = new Object[0];
  12.    static ExceptionListener defaultExceptionListener = new 1();
  13.    Object target;
  14.    String methodName;
  15.    Object[] arguments;
  16.  
  17.    public Statement(Object var1, String var2, Object[] var3) {
  18.       this.target = var1;
  19.       this.methodName = var2;
  20.       this.arguments = var3 == null ? emptyArray : var3;
  21.    }
  22.  
  23.    public Object getTarget() {
  24.       return this.target;
  25.    }
  26.  
  27.    public String getMethodName() {
  28.       return this.methodName;
  29.    }
  30.  
  31.    public Object[] getArguments() {
  32.       return this.arguments;
  33.    }
  34.  
  35.    public void execute() throws Exception {
  36.       this.invoke();
  37.    }
  38.  
  39.    Object invoke() throws Exception {
  40.       Object var1 = this.getTarget();
  41.       String var2 = this.getMethodName();
  42.       if (var1 != null && var2 != null) {
  43.          Object[] var3 = this.getArguments();
  44.          if (var1 == Class.class && var2.equals("forName")) {
  45.             return ObjectHandler.classForName((String)var3[0]);
  46.          } else {
  47.             Class[] var4 = new Class[var3.length];
  48.  
  49.             for(int var5 = 0; var5 < var3.length; ++var5) {
  50.                var4[var5] = var3[var5] == null ? null : var3[var5].getClass();
  51.             }
  52.  
  53.             Object var10 = null;
  54.             if (var1 instanceof Class) {
  55.                if (var2.equals("new")) {
  56.                   var2 = "newInstance";
  57.                }
  58.  
  59.                if (var2.equals("newInstance") && ((Class)var1).isArray()) {
  60.                   Object var6 = Array.newInstance(((Class)var1).getComponentType(), var3.length);
  61.  
  62.                   for(int var7 = 0; var7 < var3.length; ++var7) {
  63.                      Array.set(var6, var7, var3[var7]);
  64.                   }
  65.  
  66.                   return var6;
  67.                }
  68.  
  69.                if (var2.equals("newInstance") && var3.length != 0) {
  70.                   if (var1 == Character.class && var3.length == 1 && var4[0] == String.class) {
  71.                      return new Character(((String)var3[0]).charAt(0));
  72.                   }
  73.  
  74.                   var10 = ReflectionUtils.getConstructor((Class)var1, var4);
  75.                }
  76.  
  77.                if (var10 == null && var1 != Class.class) {
  78.                   var10 = ReflectionUtils.getMethod((Class)var1, var2, var4);
  79.                }
  80.  
  81.                if (var10 == null) {
  82.                   var10 = ReflectionUtils.getMethod(Class.class, var2, var4);
  83.                }
  84.             } else {
  85.                if (var1.getClass().isArray() && (var2.equals("set") || var2.equals("get"))) {
  86.                   int var11 = (Integer)var3[0];
  87.                   if (var2.equals("get")) {
  88.                      return Array.get(var1, var11);
  89.                   } else {
  90.                      Array.set(var1, var11, var3[1]);
  91.                      return null;
  92.                   }
  93.                }
  94.  
  95.                var10 = ReflectionUtils.getMethod(var1.getClass(), var2, var4);
  96.             }
  97.  
  98.             if (var10 != null) {
  99.                try {
  100.                   if (var10 instanceof Method) {
  101.                      return MethodUtil.invoke((Method)var10, var1, var3);
  102.                   } else {
  103.                      return ((Constructor)var10).newInstance(var3);
  104.                   }
  105.                } catch (IllegalAccessException var8) {
  106.                   throw new Exception("Statement cannot invoke: " + var2 + " on " + var1.getClass(), var8);
  107.                } catch (InvocationTargetException var9) {
  108.                   Throwable var12 = var9.getTargetException();
  109.                   if (var12 instanceof Exception) {
  110.                      throw (Exception)var12;
  111.                   } else {
  112.                      throw var9;
  113.                   }
  114.                }
  115.             } else {
  116.                throw new NoSuchMethodException(this.toString());
  117.             }
  118.          }
  119.       } else {
  120.          throw new NullPointerException((var1 == null ? "target" : "methodName") + " should not be null");
  121.       }
  122.    }
  123.  
  124.    String instanceName(Object var1) {
  125.       if (var1 == null) {
  126.          return "null";
  127.       } else {
  128.          return var1.getClass() == String.class ? "\"" + (String)var1 + "\"" : NameGenerator.unqualifiedClassName(var1.getClass());
  129.       }
  130.    }
  131.  
  132.    public String toString() {
  133.       Object var1 = this.getTarget();
  134.       String var2 = this.getMethodName();
  135.       Object[] var3 = this.getArguments();
  136.       StringBuffer var4 = new StringBuffer(this.instanceName(var1) + "." + var2 + "(");
  137.       int var5 = var3.length;
  138.  
  139.       for(int var6 = 0; var6 < var5; ++var6) {
  140.          var4.append(this.instanceName(var3[var6]));
  141.          if (var6 != var5 - 1) {
  142.             var4.append(", ");
  143.          }
  144.       }
  145.  
  146.       var4.append(");");
  147.       return var4.toString();
  148.    }
  149. }
  150.